#include "common/api/server.h"
#include "common/api/server_helper.hpp"

#include "api_controller.h"

#include "add_element_handler.h"

namespace Api
{

AddElementHandler::AddElementHandler(
    crow::App<>& crowApplication,
    ApiController* controller
)
    : m_controller(controller)
{
    ADD_CROW_ROUTE_ADD_ELEMENT(
        crowApplication,
        [this](
            const Uuids::Uuid& sessionUuid,
            std::shared_ptr<Elements::Element> element
        ) -> unsigned
        {
            // TODO : добавить проверку прав
            m_controller->dataController()->save(element);
            m_controller->changesManager().push(
                element->elementType(),
                element->id()
            );
            // TODO : реализовать оповещение заинтересованных клиентов
            return element->id();
        }
    );
}

} // namespace Api
